package com.pmenergy.model;

// Generated 15/08/2014 01:13:30 AM by Hibernate Tools 3.4.0.CR1

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Proforma generated by hbm2java
 */
@Entity
@Table(name = "PROFORMA", schema = "TECNOTREE")
public class Proforma implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private BigDecimal proformaId;
	private Empleado empleado;
	private Cliente cliente;
	private FormaPago formaPago;
	private TipoProforma tipoProforma;
	private String descripcion;
	private Date fechaEmision;
	private String descripcion2;
	private String observaciones;
	private BigDecimal subtotal;
	private BigDecimal descuento;
	private BigDecimal iva;
	private BigDecimal total;
	private Set<ProformaDetalle> proformaDetalles = new HashSet<ProformaDetalle>(
			0);

	public Proforma() {
	}

	public Proforma(BigDecimal proformaId, Empleado empleado, Cliente cliente,
			FormaPago formaPago, TipoProforma tipoProforma, String descripcion,
			Date fechaEmision, BigDecimal subtotal, BigDecimal descuento,
			BigDecimal iva, BigDecimal total) {
		this.proformaId = proformaId;
		this.empleado = empleado;
		this.cliente = cliente;
		this.formaPago = formaPago;
		this.tipoProforma = tipoProforma;
		this.descripcion = descripcion;
		this.fechaEmision = fechaEmision;
		this.subtotal = subtotal;
		this.descuento = descuento;
		this.iva = iva;
		this.total = total;
	}

	public Proforma(BigDecimal proformaId, Empleado empleado, Cliente cliente,
			FormaPago formaPago, TipoProforma tipoProforma, String descripcion,
			Date fechaEmision, String descripcion2, String observaciones,
			BigDecimal subtotal, BigDecimal descuento, BigDecimal iva,
			BigDecimal total, Set<ProformaDetalle> proformaDetalles) {
		this.proformaId = proformaId;
		this.empleado = empleado;
		this.cliente = cliente;
		this.formaPago = formaPago;
		this.tipoProforma = tipoProforma;
		this.descripcion = descripcion;
		this.fechaEmision = fechaEmision;
		this.descripcion2 = descripcion2;
		this.observaciones = observaciones;
		this.subtotal = subtotal;
		this.descuento = descuento;
		this.iva = iva;
		this.total = total;
		this.proformaDetalles = proformaDetalles;
	}

	@Id
	@TableGenerator(name = "EVENTO_PROFORMA",
    table = "SECUENCIA",
    pkColumnName = "NOMBRE",
    valueColumnName = "VALOR",
    pkColumnValue = "PROFORMA",
    allocationSize=1)
	@GeneratedValue(strategy=GenerationType.TABLE,generator = "EVENTO_PROFORMA")

	@Column(name = "PROFORMA_ID", unique = true, nullable = false, precision = 22, scale = 0)
	public BigDecimal getProformaId() {
		return this.proformaId;
	}

	public void setProformaId(BigDecimal proformaId) {
		this.proformaId = proformaId;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "EMPLEADO_ID", nullable = false)
	public Empleado getEmpleado() {
		return this.empleado;
	}

	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "CLIENTE_ID", nullable = false)
	public Cliente getCliente() {
		return this.cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "FORMA_PAGO_ID", nullable = false)
	public FormaPago getFormaPago() {
		return this.formaPago;
	}

	public void setFormaPago(FormaPago formaPago) {
		this.formaPago = formaPago;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "TIPO_PROFORMA_ID", nullable = false)
	public TipoProforma getTipoProforma() {
		return this.tipoProforma;
	}

	public void setTipoProforma(TipoProforma tipoProforma) {
		this.tipoProforma = tipoProforma;
	}

	@Column(name = "DESCRIPCION", nullable = false, length = 60)
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FECHA_EMISION", nullable = false, length = 7)
	public Date getFechaEmision() {
		return this.fechaEmision;
	}

	public void setFechaEmision(Date fechaEmision) {
		this.fechaEmision = fechaEmision;
	}

	@Column(name = "DESCRIPCION_2", length = 60)
	public String getDescripcion2() {
		return this.descripcion2;
	}

	public void setDescripcion2(String descripcion2) {
		this.descripcion2 = descripcion2;
	}

	@Column(name = "OBSERVACIONES", length = 1000)
	public String getObservaciones() {
		return this.observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	@Column(name = "SUBTOTAL", nullable = false, precision = 22, scale = 0)
	public BigDecimal getSubtotal() {
		return this.subtotal;
	}

	public void setSubtotal(BigDecimal subtotal) {
		this.subtotal = subtotal;
	}

	@Column(name = "DESCUENTO", nullable = false, precision = 22, scale = 0)
	public BigDecimal getDescuento() {
		return this.descuento;
	}

	public void setDescuento(BigDecimal descuento) {
		this.descuento = descuento;
	}

	@Column(name = "IVA", nullable = false, precision = 22, scale = 0)
	public BigDecimal getIva() {
		return this.iva;
	}

	public void setIva(BigDecimal iva) {
		this.iva = iva;
	}

	@Column(name = "TOTAL", nullable = false, precision = 22, scale = 0)
	public BigDecimal getTotal() {
		return this.total;
	}

	public void setTotal(BigDecimal total) {
		this.total = total;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "proforma")
	public Set<ProformaDetalle> getProformaDetalles() {
		return this.proformaDetalles;
	}

	public void setProformaDetalles(Set<ProformaDetalle> proformaDetalles) {
		this.proformaDetalles = proformaDetalles;
	}

}
